package com.cinc.ebc.fi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cinc.ebc.fi.entity.FiPaymentVoucher;
import com.cinc.ebc.fi.entity.FiPaymentVoucherDetail;
import com.cinc.ebc.fi.model.FiPaymentVoucherDetailModel;
import com.cinc.ebc.fi.model.FiSupplyPaymentDetailModel;
import com.cinc.ebc.fi.model.FiSupplyPrePaymentDetailModel;
import com.cinc.ebc.fi.vo.FiPaymentVoucherDetailPage;
import com.cinc.ebc.fi.vo.FiSupplyPaymentDetailPage;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * @Description: 付款单
 * @Author: jeecg-boot
 * @Date: 2022-12-17
 * @Version: V1.0
 */
public interface IFiPaymentVoucherService extends IService<FiPaymentVoucher> {

    /**
     * 添加一对多
     */
    public void saveMain(FiPaymentVoucher fiPaymentVoucher, List<FiPaymentVoucherDetail> fiPaymentVoucherDetailList);

    /**
     * 修改一对多
     */
    public void updateMain(FiPaymentVoucher fiPaymentVoucher, List<FiPaymentVoucherDetail> fiPaymentVoucherDetailList);

    /**
     * 删除一对多
     */
    public void delMain(String id);

    /**
     * 批量删除一对多
     */
    public void delBatchMain(Collection<? extends Serializable> idList);

    /**
     * 审核
     *
     * @param fiPaymentVoucherList
     */
    void audit(List<FiPaymentVoucher> fiPaymentVoucherList);

    /**
     * 核销
     *
     * @param fiPaymentVoucherList
     */
    void verify(List<FiPaymentVoucher> fiPaymentVoucherList);

    /**
     * 明细分页查询
     *
     * @param page
     * @param param
     * @return
     */
    void detailPage(Page<FiPaymentVoucherDetailModel> page, FiPaymentVoucherDetailPage param);

    /**
     * 供应商应付明细账-付款
     *
     * @param page
     * @param param
     * @return
     */
    void supplyPaymentDetailPage(Page<FiSupplyPaymentDetailModel> page, FiSupplyPaymentDetailPage param);

    /**
     * 供应商应付明细账-预付款
     *
     * @param page
     * @param param
     * @return
     */
    void supplyPrePaymentDetailPage(Page<FiSupplyPrePaymentDetailModel> page, FiSupplyPaymentDetailPage param);
}
